package com.eneat.smartrule.service;

import com.eneat.smartrule.dto.request.RuleExecuteRequest;
import com.eneat.smartrule.dto.request.RuleReq;
import com.eneat.smartrule.dto.response.PageResponse;
import com.eneat.smartrule.dto.response.RuleRes;
import com.eneat.smartrule.model.Rule;

public interface RuleService {

    /**
     * 创建规则
     */
    void createRule(Rule rule);

    /**
     * 根据ID查询规则
     */
    RuleRes getRuleById(Integer id);

    /**
     * 根据ID更新规则
     */
    boolean updateRule(Rule rule);

    /**
     * 根据ID删除规则
     */
    boolean deleteRule(Integer id);

    /**
     * 根据实体条件查询分页规则
     */
    PageResponse<RuleRes> searchRules(RuleReq ruleReq);

    /**
     * 执行规则，返回结果，false，true或者数值
     */
    Object execute(RuleExecuteRequest ruleExecuteRequest);
}
